<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>DeflatedChunksSet (PNGJ 2.1.1-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="DeflatedChunksSet (PNGJ 2.1.1-SNAPSHOT API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DeflatedChunksSet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/DeflatedChunkReader.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/Deinterlacer.html" title="class in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/DeflatedChunksSet.html" target="_top">Frames</a></li>
<li><a href="DeflatedChunksSet.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">ar.com.hjg.pngj</div>
<h2 title="Class DeflatedChunksSet" class="title">Class DeflatedChunksSet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>ar.com.hjg.pngj.DeflatedChunksSet</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../ar/com/hjg/pngj/IdatSet.html" title="class in ar.com.hjg.pngj">IdatSet</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">DeflatedChunksSet</span>
extends <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">A set of IDAT-like chunks which, concatenated, form a zlib stream.
 <p>
 The inflated stream is intented to be read as a sequence of "rows", of which the caller knows the lengths (not
 necessary equal) and number.
 <p>
 Eg: For IDAT non-interlaced images, a row has bytesPerRow + 1 filter byte<br>
 For interlaced images, the lengths are variable.
 <p>
 This class can work in sync (polled) mode or async (callback) mode. But for callback mode the method
 processRowCallback() must be overriden
 <p>
 See <a href="../../../../ar/com/hjg/pngj/IdatSet.html" title="class in ar.com.hjg.pngj"><code>IdatSet</code></a>, which is mostly used and has a slightly simpler use.<br>
 See <code>DeflatedChunkSetTest</code> for example of use.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#chunkid">chunkid</a></strong></code>
<div class="block">All IDAT-like chunks that form a same DeflatedChunksSet should have the same id</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected byte[]</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#row">row</a></strong></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#DeflatedChunksSet(java.lang.String, int, int)">DeflatedChunksSet</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;chunkid,
                 int&nbsp;initialRowLen,
                 int&nbsp;maxRowLen)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#DeflatedChunksSet(java.lang.String, int, int, java.util.zip.Inflater, byte[])">DeflatedChunksSet</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;chunkid,
                 int&nbsp;initialRowLen,
                 int&nbsp;maxRowLen,
                 <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/zip/Inflater.html?is-external=true" title="class or interface in java.util.zip">Inflater</a>&nbsp;inflater,
                 byte[]&nbsp;buffer)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#ackNextChunkId(java.lang.String)">ackNextChunkId</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</code>
<div class="block">This will be called by the owner to report us the next chunk to come.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#allowOtherChunksInBetween(java.lang.String)">allowOtherChunksInBetween</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</code>
<div class="block">Some IDAT-like set can allow other chunks in between (APGN?).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#appendNewChunk(ar.com.hjg.pngj.DeflatedChunkReader)">appendNewChunk</a></strong>(<a href="../../../../ar/com/hjg/pngj/DeflatedChunkReader.html" title="class in ar.com.hjg.pngj">DeflatedChunkReader</a>&nbsp;cr)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#close()">close</a></strong>()</code>
<div class="block">This should be called when discarding this object, or for aborting.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#done()">done</a></strong>()</code>
<div class="block">Forces the DONE state, this object won't uncompress more data.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getBytesIn()">getBytesIn</a></strong>()</code>
<div class="block">total number of bytes that have been fed to this object</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getBytesOut()">getBytesOut</a></strong>()</code>
<div class="block">total number of bytes that have been uncompressed</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getInflatedRow()">getInflatedRow</a></strong>()</code>
<div class="block">Inflated buffer.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRowFilled()">getRowFilled</a></strong>()</code>
<div class="block">This the amount of valid bytes in the buffer</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRowLen()">getRowLen</a></strong>()</code>
<div class="block">Target size of the current row, including filter byte.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRown()">getRown</a></strong>()</code>
<div class="block">Get current (last) row number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#isCallbackMode()">isCallbackMode</a></strong>()</code>
<div class="block">Callback mode = async processing</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#isDone()">isDone</a></strong>()</code>
<div class="block">In this state, all relevant data has been uncompressed and retrieved (exceptionally, the reading has ended
 prematurely).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#isRowReady()">isRowReady</a></strong>()</code>
<div class="block">In this state, the object is waiting the caller to retrieve inflated data</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#isTerminated()">isTerminated</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#isWaitingForMoreInput()">isWaitingForMoreInput</a></strong>()</code>
<div class="block">In this state, the object is waiting for more input to deflate.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#prepareForNextRow(int)">prepareForNextRow</a></strong>(int&nbsp;len)</code>
<div class="block">Should be called after the previous row was processed</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#preProcessRow()">preProcessRow</a></strong>()</code>
<div class="block">Called automatically in all modes when a full row has been inflated.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#processBytes(byte[], int, int)">processBytes</a></strong>(byte[]&nbsp;buf,
            int&nbsp;off,
            int&nbsp;len)</code>
<div class="block">Feeds the inflater with the compressed bytes
 
 In poll mode, the caller should not call repeatedly this, without consuming first, checking
 isDataReadyForConsumer()</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#processDoneCallback()">processDoneCallback</a></strong>()</code>
<div class="block">Callback, to be implemented in callbackMode</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#processRowCallback()">processRowCallback</a></strong>()</code>
<div class="block">Callback, must be implemented in callbackMode</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#setCallbackMode(boolean)">setCallbackMode</a></strong>(boolean&nbsp;callbackMode)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#terminate()">terminate</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#toString()">toString</a></strong>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="row">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>row</h4>
<pre>protected&nbsp;byte[] row</pre>
</li>
</ul>
<a name="chunkid">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>chunkid</h4>
<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> chunkid</pre>
<div class="block">All IDAT-like chunks that form a same DeflatedChunksSet should have the same id</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="DeflatedChunksSet(java.lang.String, int, int, java.util.zip.Inflater, byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DeflatedChunksSet</h4>
<pre>public&nbsp;DeflatedChunksSet(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;chunkid,
                 int&nbsp;initialRowLen,
                 int&nbsp;maxRowLen,
                 <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/zip/Inflater.html?is-external=true" title="class or interface in java.util.zip">Inflater</a>&nbsp;inflater,
                 byte[]&nbsp;buffer)</pre>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>initialRowLen</code> - Length in bytes of first "row" (see description)</dd><dd><code>maxRowLen</code> - Max length in bytes of "rows"</dd><dd><code>inflater</code> - Can be null. If not null, must be already reset (and it must be closed/released by caller!)</dd></dl>
</li>
</ul>
<a name="DeflatedChunksSet(java.lang.String, int, int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DeflatedChunksSet</h4>
<pre>public&nbsp;DeflatedChunksSet(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;chunkid,
                 int&nbsp;initialRowLen,
                 int&nbsp;maxRowLen)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="appendNewChunk(ar.com.hjg.pngj.DeflatedChunkReader)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendNewChunk</h4>
<pre>protected&nbsp;void&nbsp;appendNewChunk(<a href="../../../../ar/com/hjg/pngj/DeflatedChunkReader.html" title="class in ar.com.hjg.pngj">DeflatedChunkReader</a>&nbsp;cr)</pre>
</li>
</ul>
<a name="processBytes(byte[], int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processBytes</h4>
<pre>protected&nbsp;void&nbsp;processBytes(byte[]&nbsp;buf,
                int&nbsp;off,
                int&nbsp;len)</pre>
<div class="block">Feeds the inflater with the compressed bytes
 
 In poll mode, the caller should not call repeatedly this, without consuming first, checking
 isDataReadyForConsumer()</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>buf</code> - </dd><dd><code>off</code> - </dd><dd><code>len</code> - </dd></dl>
</li>
</ul>
<a name="preProcessRow()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>preProcessRow</h4>
<pre>protected&nbsp;void&nbsp;preProcessRow()</pre>
<div class="block">Called automatically in all modes when a full row has been inflated.</div>
</li>
</ul>
<a name="processRowCallback()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processRowCallback</h4>
<pre>protected&nbsp;int&nbsp;processRowCallback()</pre>
<div class="block">Callback, must be implemented in callbackMode
 <p>
 This should use <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRowFilled()"><code>getRowFilled()</code></a> and <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getInflatedRow()"><code>getInflatedRow()</code></a> to access the row.
 <p>
 Must return byes of next row, for next callback.</div>
</li>
</ul>
<a name="processDoneCallback()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processDoneCallback</h4>
<pre>protected&nbsp;void&nbsp;processDoneCallback()</pre>
<div class="block">Callback, to be implemented in callbackMode
 <p>
 This will be called once to notify state done</div>
</li>
</ul>
<a name="getInflatedRow()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInflatedRow</h4>
<pre>public&nbsp;byte[]&nbsp;getInflatedRow()</pre>
<div class="block">Inflated buffer.
 
 The effective length is given by <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRowFilled()"><code>getRowFilled()</code></a></div>
</li>
</ul>
<a name="prepareForNextRow(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareForNextRow</h4>
<pre>public&nbsp;void&nbsp;prepareForNextRow(int&nbsp;len)</pre>
<div class="block">Should be called after the previous row was processed
 <p>
 Pass 0 or negative to signal that we are done (not expecting more bytes)
 <p>
 This resets <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#rowfilled"><code>rowfilled</code></a>
 <p>
 The</div>
</li>
</ul>
<a name="isWaitingForMoreInput()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isWaitingForMoreInput</h4>
<pre>public&nbsp;boolean&nbsp;isWaitingForMoreInput()</pre>
<div class="block">In this state, the object is waiting for more input to deflate.
 <p>
 Only in this state it's legal to feed this</div>
</li>
</ul>
<a name="isRowReady()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRowReady</h4>
<pre>public&nbsp;boolean&nbsp;isRowReady()</pre>
<div class="block">In this state, the object is waiting the caller to retrieve inflated data
 <p>
 Effective length: see <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#getRowFilled()"><code>getRowFilled()</code></a></div>
</li>
</ul>
<a name="isDone()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDone</h4>
<pre>public&nbsp;boolean&nbsp;isDone()</pre>
<div class="block">In this state, all relevant data has been uncompressed and retrieved (exceptionally, the reading has ended
 prematurely).
 <p>
 We can still feed this object, but the bytes will be swallowed/ignored.</div>
</li>
</ul>
<a name="isTerminated()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTerminated</h4>
<pre>public&nbsp;boolean&nbsp;isTerminated()</pre>
</li>
</ul>
<a name="ackNextChunkId(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ackNextChunkId</h4>
<pre>public&nbsp;boolean&nbsp;ackNextChunkId(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
<div class="block">This will be called by the owner to report us the next chunk to come. We can make our own internal changes and
 checks. This returns true if we acknowledge the next chunk as part of this set</div>
</li>
</ul>
<a name="terminate()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>protected&nbsp;void&nbsp;terminate()</pre>
</li>
</ul>
<a name="close()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
<div class="block">This should be called when discarding this object, or for aborting. Secure, idempotent Don't use this just to
 notify this object that it has no more work to do, see <a href="../../../../ar/com/hjg/pngj/DeflatedChunksSet.html#done()"><code>done()</code></a></div>
</li>
</ul>
<a name="done()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>done</h4>
<pre>public&nbsp;void&nbsp;done()</pre>
<div class="block">Forces the DONE state, this object won't uncompress more data. It's still not terminated, it will accept more IDAT
 chunks, but will ignore them.</div>
</li>
</ul>
<a name="getRowLen()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRowLen</h4>
<pre>public&nbsp;int&nbsp;getRowLen()</pre>
<div class="block">Target size of the current row, including filter byte. <br>
 should coincide (or be less than) with row.length</div>
</li>
</ul>
<a name="getRowFilled()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRowFilled</h4>
<pre>public&nbsp;int&nbsp;getRowFilled()</pre>
<div class="block">This the amount of valid bytes in the buffer</div>
</li>
</ul>
<a name="getRown()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRown</h4>
<pre>public&nbsp;int&nbsp;getRown()</pre>
<div class="block">Get current (last) row number.
 <p>
 This corresponds to the raw numeration of rows as seen by the deflater. Not the same as the real image row, if
 interlaced.</div>
</li>
</ul>
<a name="allowOtherChunksInBetween(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowOtherChunksInBetween</h4>
<pre>public&nbsp;boolean&nbsp;allowOtherChunksInBetween(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
<div class="block">Some IDAT-like set can allow other chunks in between (APGN?).
 <p>
 Normally false.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>id</code> - Id of the other chunk that appeared in middel of this set.</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if allowed</dd></dl>
</li>
</ul>
<a name="isCallbackMode()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCallbackMode</h4>
<pre>public&nbsp;boolean&nbsp;isCallbackMode()</pre>
<div class="block">Callback mode = async processing</div>
</li>
</ul>
<a name="setCallbackMode(boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbackMode</h4>
<pre>public&nbsp;void&nbsp;setCallbackMode(boolean&nbsp;callbackMode)</pre>
</li>
</ul>
<a name="getBytesIn()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBytesIn</h4>
<pre>public&nbsp;long&nbsp;getBytesIn()</pre>
<div class="block">total number of bytes that have been fed to this object</div>
</li>
</ul>
<a name="getBytesOut()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBytesOut</h4>
<pre>public&nbsp;long&nbsp;getBytesOut()</pre>
<div class="block">total number of bytes that have been uncompressed</div>
</li>
</ul>
<a name="toString()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DeflatedChunksSet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/DeflatedChunkReader.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/Deinterlacer.html" title="class in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/DeflatedChunksSet.html" target="_top">Frames</a></li>
<li><a href="DeflatedChunksSet.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
</body>
</html>
